/*
 * Powered By [rapid-framework]
 * Csdn Code: generate simple CRUD code in single table.
 * Since 2015 - 2017
 */

BUI.use('common/page');
BUI.use([ 'common/search', 'bui/overlay', 'bui/grid', 'bui/data','bui/form'],
	function(Search, Overlay, Grid, Data, Form) {
		var processSpecialConditionEnum = {
			'false' : '失效',
			'true' : '生效'
		};
		// 查询表单
		var form = new Form.Form({
			srcNode : '#searchForm'
		}).render();
		// 定义表头
		columns = [
		{
			title : '主键ID',
			dataIndex : 'specialConditionId',
			visible : false
		},
		{
			title : '类型',
			dataIndex : 'conditionType',
			elCls : 'center',
			width : 120,
			editor : {
				xtype : 'number',
				rules : {
					required : [ true, '类型不能为空!' ]
				}
			},
			renderer : BUI.Grid.Format
			.enumRenderer(processSpecialConditionEnum)
		},
		{
			title : 'APP描述',
			dataIndex : 'appDesc',
			elCls : 'center',
			width : 150,
			editor : {
				xtype : 'text',
				rules : {
					required : [ true, 'APP描述不能为空!' ]
				}
			}
		},
		{
			title : '产品ID',
			dataIndex : 'productId',
			visible : false
		},
		{
			title : '状态',
			dataIndex : 'conditionStatus',
			elCls : 'center',
			width : 120,
			editor : {
				xtype : 'select',
				items : processSpecialConditionEnum,
				rules : {
					required : [ true, '状态不能为空!' ]
				}
			},
			renderer : BUI.Grid.Format
					.enumRenderer(processSpecialConditionEnum)
		},
		{
			title : '创建时间',
			dataIndex : 'createTime',
			elCls : 'center',
			width : 200,
			editor : {
				xtype : 'date',
				datePicker : {
					showTime : true
				},
				rules : {
					required : [ true, '最后创建时间不能为空!' ]
				}
			},
			renderer : BUI.Grid.Format.datetimeRenderer
		},
		{
			title : '最后更新时间',
			dataIndex : 'updateTime',
			elCls : 'center',
			width : 150,
			editor : {
				xtype : 'date',
				datePicker : {
					showTime : true
				},
				rules : {
					required : [ true, '最后最后更新时间不能为空!' ]
				}
			},
			renderer : BUI.Grid.Format.datetimeRenderer
		},
		{
			title : '操作',
			elCls : 'center',
			width : 100,
			renderer : function(value, obj) {
				return '<span class="grid-command btn-edit">编辑</span>';
			}
		} ];
		// 行编辑
		var editing = new Grid.Plugins.RowEditing({
			triggerCls : 'btn-edit',
			triggerSelected : false

		}),
		// 获取数据
		store = new BUI.Data.Store({
			url : 'listProcessSpecialCondition?field=createTime&direction=desc',
			pageSize : 20,
			autoLoad : true,
			remoteSort : true
		});
		// 获取表格对象
		gridCfg = Search.createGridCfg(columns, {
			plugins : [ editing, Grid.Plugins.CheckSelection ],
			tbar : { // 添加、删除
				items : [ {
					btnCls : 'button button-small',
					text : '<i class="icon-plus"></i>添加',
					listeners : {
						'click' : addFunction
					}
				}, {
					btnCls : 'button button-small',
					text : '<i class="icon-refresh"></i>刷新',
					listeners : {
						'click' : refreshFunction
					}
				},  {
					btnCls : 'button button-small',
					text : '<i class="icon-remove"></i>删除',
					listeners : {
						'click' : delFunction
					}
				} ]
			},
		});
		// 触发编辑
		editing.on('editorshow', function(ev) {
			var editor = editing.get('curEditor');
			editor.set('errorAlign', {
				points : [ 'br', 'tr' ],
				offset : [ 0, 10 ]
			});
		});
		// 编辑提交
		editing.on('accept', function(ev) {
			var record = editing.get('record');
			var none = record["specialConditionId"] === "";
			var saveUrl = none ? 'saveProcessSpecialCondition' : 'updateProcessSpecialCondition';
			var requestType = none ? 'POST' : 'PUT';
			jQuery.ajax({
				type : requestType,
				url : saveUrl,
				dataType : 'json',
				contentType : 'application/json;charset=UTF-8',
				data : JSON.stringify(record),
				complete : function(data) {
					if (data.responseText == "success") { // 删除成功
						search.load();
					} else { // 删除失败
						BUI.Message.Alert('保存失败！');
					}
				}
			});
		});
		// 添加记录
		function addFunction() {
			var newData = {};
			store.addAt(newData, 0);
			editing.edit(); // 添加记录后，直接编辑
		}
		// 删除选中的记录
		function delFunction() {
			var selections = grid.getSelection();
			delItems(selections);
			store.remove(selections);
		}
		// 刷新
		function refreshFunction() {
			search.load();
		}
		// 删除
		function delItems(items) {
			var ids = "";
			BUI.each(items, function(item) {
				ids += item.specialConditionId + ",";
			});
			if (ids.length) {
				BUI.Message.Confirm('确认要删除选中的记录么？', function() {
					jQuery.ajax({
						type : 'DELETE',
						url : 'removeProcessSpecialCondition?ids=' + ids,
						dataType : 'json',
						data : {},
						complete : function(data) {
							if (data.responseText == "success") { // 删除成功
								search.load();
							} else { // 删除失败
								BUI.Message.Alert('删除失败！');
							}
						}
					});
				}, 'question');
			}
		}
		// 查询
		search = new Search({
			store : store,
			autoSearch : true,
			gridCfg : gridCfg
		});
		grid = search.get('grid');
	});